package com.library.controller;

import com.library.pojo.dto.user.UserDTO;
import com.library.pojo.dto.user.UserPageQueryDTO;
import com.library.pojo.vo.UserVO;
import com.library.result.PageResult;
import com.library.result.Result;
import com.library.service.UserService;
import com.library.service.impl.UserServiceImpl;

import java.util.List;


/**
 * 管理员对用户的增删改查
 * 只写对外的方法
 */
public class AdminUserController {
    UserService userService = new UserServiceImpl();

    /**
     * 查询用户列表
     * @param userPageQueryDTO 分页参数（必填：pageNum/pageSize；可选：userId/username关键词）
     * @return PageResult<UserVO>：分页用户列表
     */
    public Result<PageResult> pageQuery(UserPageQueryDTO userPageQueryDTO) {
        // 调用service层方法
        Result<PageResult> pageResultResult = userService.pageQuery(userPageQueryDTO);
        return Result.success(pageResultResult.getData());
    }

    /**
     * 添加用户
     * @param userDTO 注册参数（可选：username/password/role等）
     * @return Result<String>：成功/失败提示
     */
    public Result<String> insert(UserDTO userDTO){
        int result =userService.insert(userDTO);
        if(result!=0) {
            return Result.success();
        }else{
            return Result.error("添加用户失败");
        }
    }

    /**
     * 根据用户编号修改用户信息
     * @param userDTO 修改参数（必填：userId；可选：username/password/role等）
     * @return Result<String>：成功/失败提示
     */
    public Result<String> update(UserDTO userDTO) {
        int result =userService.update(userDTO);
        if(result!=0) {
            return Result.success();
        }else{
            return Result.error("修改用户失败");
        }
    }

    /**
     * 根据用户编号删除用户
     * @param userId 用户Id(必填)
     * @return Result<String>：成功/失败提示
     */
    public Result<String> deleteById(Integer userId){
        int result=userService.deleteById(userId);
        if(result!=0) {
            return Result.success();
        }else{
            return Result.error("删除用户失败");
        }
    }
}
